#pragma once

#include "Light_Point.h"
#include <SFML\Graphics.hpp>
#include "mutant.h"
#include "raider.h"
#include "Boss.h"
#include "Player.h"
#include <cmath>
#include <cstdlib>
#include <ctime>
#include <vector>
#include "Input.h"



class EnemyManager{
public:
	EnemyManager();
	~EnemyManager();


	void initialize(sf::RenderWindow* win, Player* player, ltbl::Light_Point* muzzleFlash, Input* inputObj);

	void update();
	void cleanup();
	std::vector<mutant*> m_arrayOfMutants;
	std::vector<raider*> m_arrayOfRaiders;
	std::vector<Boss*> m_arrayOfBosses;
	bool restockAvailable;
	sf::Clock* m_mutantClock;
	sf::Clock* m_raiderClock;
	sf::Clock* m_bossClock;

	RaiderBulletHandler raiderBulletHandlerObj;

	int	  mutantCount;
	int   raiderCount;
	int	  bossCount;
	bool  sendWave;
	int   currentWave;
	float m_lastSpawn;

	int m;
	int r;
	int b;

	int addBoss;
	float spawnRate;

private:
	sf::RenderWindow* m_renderWindow;
	ltbl::Light_Point* m_muzzleFlash;
	Player* m_player;
	
	//sf::Time* m_time;
	int randomSide;
	int randomCheckY;
	int randomCheckX;
	int randomX;
	int randomY;
	int randomtest;
	//sf::Randomizer* m_random;

	void spawnMutant();

	sf::Texture* mutantWalkImage;
	sf::Texture* raiderImage;
	sf::Texture* hitBoxImg;
	sf::Texture* bossWalkImg;
	sf::Texture* mutantAttackImage;
	sf::Texture* bossAttackImage;
	

	Input* m_inputObj;
};

